package ar.edu.utn.frgp.banco.servlets;

import java.util.List;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import ar.edu.utn.frgp.banco.domain.Cuenta;
import ar.edu.utn.frgp.banco.domain.PagoServicio;
import ar.edu.utn.frgp.banco.domain.Servicios;
import ar.edu.utn.frgp.banco.exceptions.ServiceException;
import ar.edu.utn.frgp.banco.service.RecursoServiceCuenta;
import ar.edu.utn.frgp.banco.service.RecursoServicePagoServicios;
import ar.edu.utn.frgp.banco.service.RecursoServiceServicios;
import ar.edu.utn.frgp.banco.service.impl.RecursoServiceCuentaImpl;
import ar.edu.utn.frgp.banco.service.impl.RecursoServicePagoServiciosImpl;
import ar.edu.utn.frgp.banco.service.impl.RecursoServiceServiciosImpl;
import ar.edu.utn.frgp.banco.servlets.scope.ServiciosBeanModificado;
import ar.edu.utn.frgp.banco.utils.ServiciosMostrar;

public class PagarServicio extends GenericServlet {
	private static final long serialVersionUID = 1L;

    /**
     * Default constructor. 
     */
    public PagarServicio() {
        // TODO Auto-generated constructor stub
    }

	@Override
	public void realizarAccion(HttpServletRequest req, HttpServletResponse resp) throws Exception {
		
		String nroservicio = (String)req.getParameter("cmbServicio");
		String nrocuenta = (String)req.getParameter("cmbCuenta");
		int  cuentaCliente=Integer.parseInt(nrocuenta);
		int  codigoServicio=Integer.parseInt(nroservicio);
		
		Servicios se = new Servicios();
		RecursoServiceServicios service = new RecursoServiceServiciosImpl();
		Cuenta cu = new Cuenta ();
		PagoServicio regpago = new PagoServicio();
		
		RecursoServiceCuenta serviceCuenta = new RecursoServiceCuentaImpl();
		RecursoServicePagoServicios servicepago = new RecursoServicePagoServiciosImpl();
				
	try {
		cu = serviceCuenta.buscarCuenta(cuentaCliente);
	
		se = service.buscarServicio(codigoServicio);
		
		//// modifico el saldo de esa cuenta (saldo de la cuenta - monto fijo del servicio)
		cu.setSaldo(cu.getSaldo()- se.getMontofijo());
		
		///// le mando a modificar saldo cuenta la cuenta con el saldo modificado
	
		serviceCuenta.modificarSaldoCuenta(cu);
	
	   ////// se carga y registra en pago del servicio en la base de datos pagoservicios
		regpago.cargarPagoServicio(codigoServicio, cuentaCliente);
	
		servicepago.registrarPago(regpago);
				
		List<ServiciosMostrar> Servicios = servicepago.listarServiciosPagosPorCuentaModificado(cu);
	
		ServiciosBeanModificado bean = new ServiciosBeanModificado();
 		
 		bean.setListado(Servicios);
 		
 		req.setAttribute("bean", bean);
 		req.getRequestDispatcher("ListadoServiciosPagados.jsp").forward(req, resp);
          
		
	} catch (ServiceException e1) {
		// TODO Auto-generated catch block
		e1.printStackTrace();
	}       
	
	
}}

